<template>
    <div class="cart_page">
        <table>
            <thead>
                <tr>
                    <th style="width: 8%">
                        <i @click="checkedAll" :class="
                          checkAll
                            ? 'iconfont icon-yduifuxuankuangxuanzhong'
                            : 'iconfont icon-yduifuxuankuang'
                        "></i>
                    </th>
                    <th style="width: 30%">礼品信息</th>
                    <th>兑换分数</th>
                    <th>数量</th>
                    <th>小计 (鸡腿)</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                <tr v-for="item,index in UserCartList" :key="index">
                    <td>
                        <i @click="check(item)" :class="
                          UserCartList[index].isChecked
                            ? 'iconfont icon-yduifuxuankuangxuanzhong'
                            : 'iconfont icon-yduifuxuankuang'
                        "></i>
                    </td>
                    <td>
                        <section>
                            <img width="84" :src="imgBaseUrl + item.coverImg" alt="列表图片" />
                            <div class="info">
                                <h5>{{item.title}}</h5>
                                <p>{{item.versionDescription}}</p>
                            </div>
                        </section>
                    </td>
                    <td>{{item.coin }}鸡腿</td>
                    <td>
                        <div class="step">
                            <span @click="changeStepNum(index,-1)">-</span>
                            <input type="text" disabled v-model="item.total" />
                            <span @click="changeStepNum(index,1)">+</span>
                        </div>
                    </td>
                    <td>{{item.coin*item.total}}鸡腿</td>
                    <td>
                        <span class="del" @click="deleteLists(item.id)">删除</span>
                    </td>
                </tr>
            </tbody>
        </table>
        <div class="total">总计：<span>{{totalCoin}}鸡腿</span></div>
        <div class="submit">提交</div>
    </div>
</template>
<script>
import { GetCartAPI, DeleteCartsAPI } from '../../request/api'
export default {
    data() {
        return {
            checkAll: false,
            UserCartList: [],
            count: 0
        };
    },
    methods: {
        async getCartList() {
            let res = await GetCartAPI();
            console.log(res);
            if (res) {
                this.UserCartList = res.data;
                for (let i = 0; i < this.UserCartList.length; i++) {
                    this.$set(this.UserCartList[i], 'isChecked', false)
                }
            }
        },
        checkedAll() {
            this.checkAll = !this.checkAll;
            this.count = 0;
            for (let i = 0; i < this.UserCartList.length; i++) {
                this.UserCartList[i].isChecked = this.checkAll;
            }
        },
        check(item) {
            item.isChecked = !item.isChecked;
            if (item.isChecked) {
                this.count++;
            } else {
                this.count--;
            }
            console.log(this.count, this.UserCartList.length);
            if (this.count == this.UserCartList.length) {
                this.checkAll = true
            } else {
                this.checkAll = false
            }
        },
        changeStepNum(i, val) {
            if (val == 1) {
                this.UserCartList[i].total = this.UserCartList[i].total + val;
            } else {
                if (this.UserCartList[i].total >= 1) {
                    this.UserCartList[i].total = this.UserCartList[i].total + val;
                } else {
                    return
                }
            }
        },
        async deleteLists(i) {
            let res = await DeleteCartsAPI(i);
            if (res) {
                this.$message.success("删除成功");
                this.getCartList();
            }
        }
    },
    created() {
        this.getCartList();
    },
    computed: {
        totalCoin() {
            let total = 0;
            this.UserCartList.reduce((pre, cur) => {
                if (cur.isChecked) {
                    return total = pre + cur.total * cur.coin
                } else {
                    return pre
                }
            }, 0)
            return total
        }
    }

};
</script>
<style lang="less" scoped>
.cart_page {
    background: #fff;

    table {
        width: 100%;
        border: 1px solid #e6e6e6;
        box-sizing: border-box;
        color: #666;
        border-collapse: collapse;
        font-size: 14px;

        thead {
            background: #f2f2f2;

            th {
                padding: 19px 0;

                .iconfont {
                    cursor: pointer;
                }

                .icon-yduifuxuankuangxuanzhong {
                    color: #0a328e;
                }
            }
        }

        tbody {
            tr {
                td {
                    vertical-align: middle;
                    text-align: center;
                    padding: 19px 0;
                    table-layout: fixed; // td的宽度固定，不随内容变化

                    .iconfont {
                        cursor: pointer;
                    }

                    .icon-yduifuxuankuangxuanzhong {
                        color: #0a328e;
                    }

                    section {
                        padding-left: 20px;
                        display: flex;
                        box-sizing: border-box;

                        img {
                            margin-right: 12px;
                        }

                        .info {
                            padding-top: 20px;
                            flex: 1;
                            overflow: hidden;
                            box-sizing: border-box;
                            text-align: left;

                            h5 {
                                overflow: hidden;
                                color: #333;
                                font-size: 18px;
                                white-space: nowrap;
                                text-overflow: ellipsis;
                                margin-bottom: 20px;
                            }

                            p {
                                color: #666;
                                overflow: hidden;
                                white-space: nowrap;
                                text-overflow: ellipsis;
                            }
                        }
                    }

                    .step {
                        width: 106px;
                        height: 32px;
                        margin: auto;

                        span {
                            float: left;
                            width: 30px;
                            height: 32px;
                            display: block;
                            border: solid 1px #d1d1d1;
                            font-size: 20px;
                            box-sizing: border-box;
                            font-weight: normal;
                            font-stretch: normal;
                            line-height: 30px;
                            letter-spacing: 0px;
                            color: #999999;
                            text-align: center;
                            cursor: pointer;
                            background: #fff;
                        }

                        input {
                            box-sizing: border-box;
                            width: 46px;
                            height: 32px;
                            float: left;
                            text-align: center;
                            font-size: 14px;
                            line-height: 23px;
                            letter-spacing: 0px;
                            color: #666666;
                            border: 0;
                            border-top: 1px solid #d1d1d1;
                            border-bottom: 1px solid #d1d1d1;
                            background: #fff;
                        }
                    }

                    .del {
                        border: 1px solid #ececec;
                        border-radius: 4px;
                        padding: 5px 10px;
                        cursor: pointer;

                        &:hover {
                            color: #fff;
                            background: #0a328e;
                        }
                    }
                }
            }
        }
    }

    .total {
        padding: 30px 0;
        text-align: right;
        font-size: 22px;

        span {
            font-weight: bold;
            color: #fd604d;
        }
    }

    .submit {
        width: 175px;
        height: 40px;
        text-align: center;
        line-height: 40px;
        font-family: SourceHanSansSC-Light;
        font-size: 18px;
        font-weight: normal;
        font-stretch: normal;
        letter-spacing: 0px;
        color: #ffffff;
        cursor: pointer;
        background-color: #0a328e;
        float: right;
    }
}
</style>